home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / ab20 / ab20_archive / games / strategy / madgic-corewar-4.0.lzh / 1989 / Tank.s < prev    next >
Text File  |  1992-03-10  |  3KB  |  51 lines

  1. ;Corwar-program 'TANK' , slitting/doubling 0-Werfer
  2. ;(c) 4/89 Detlef BUNK, Norderneyweg 5, D-43 Essen
  3. ;    ergaenzte Version
  4.        jmp start         ; only for start, ommited in further copies
  5. ptr    DAT  27           ;program length -1,care if change program!
  6. start  MOV #0    @bomb   ;shoot backwd 0-bomb
  7.        MOV #0    @bombv  ;shoot forwd  0-bomb
  8.        SUB #9    bombv   ;decrement forwd-bomb, defines forwd bombarea
  9.        ADD #9    bomb    ;increment backwd-bomb, defines backwd bombarea
  10.        DJN start  count  ;decrement bombcounter
  11.        JMP newc
  12. newc   JMZ asave  384    ;check adr. before new copyfield enemy prgr instruct?
  13.        ADD #256   new    ;if yes, i.e. non-zero, increment adr. for new copy
  14. asave  JMZ save  @new    ;test 1. adr. of copyfield if yes, increment copyadr
  15.        ADD #783   new    ;
  16. save   MOV #41   count   ;restore bmb-counter
  17.        MOV #-47  bombv   ;restore 1st bmb-adr
  18.        MOV #32   bomb    ;restore 1st bckwd-bmb-adr
  19. copy   MOV @ptr  @new    ;start copyloop
  20.        SUB #1     new    ;decrement copy-adress counter
  21.        DJN copy   ptr
  22.        JMP ready
  23. ready  MOV #27    ptr    ;restore copypointer
  24.        MOV ptr   @new    ;copy copypointer to new program
  25.        ADD #2     new    ;increment for jmp to 'start'label of new copy
  26.        SPL @new          ;invoke new progr.
  27.        ADD #2800  new    ;adr. for next copy to get out of own bomb-area
  28.        JMP start         ;once again
  29. new    DAT  544          ;adr for new copy out of own bomb-area
  30. count  DAT  41           ;num of bombs
  31. bomb   DAT  32           ;adr. of 1. backwd-bomb
  32. bombv  DAT -47           ;adr. of 1. forwd-bomb,not lower than progr.-length!
  33. ;Program firstly throws 'count' 0-bombs foreward and backward.
  34. ;Then it looks for a safe place for a new copy, checking copyarea for other
  35. ;enemy- or own program instruction to find a field which is 
  36. ;filled with 0-data. First check is made far enough ahead of the eventual
  37. ;copyarea to detect 'mov 0 1'-aggressors, which can disturb the copyprocess.
  38. ;Distance must fit that the last backward-bomb of the old program
  39. ;and the last foreward-bomb of the new program cannot destroy each other.
  40. ;The second check looks for the same but checks exactly for 0 the adress of 
  41. ;the first potentially copied instruction. If either check is negativ
  42. ;new copyarea is computed by decrementing copyadress.
  43. ;Then copy starts by risk of destroying own old programs or by chance
  44. ;writing over enemy programs.
  45. ; The bombed area depends on number and distance of thrown bombs.
  46. ;It should not overlap, so that there's no risk to destroy each other
  47. ;in the beginning of the battle during the first cycles. In the further course
  48. ;of the battle it is inevitable. But this has the advantage that not too many
  49. ;copys are alive. A medium amount of copys can throw more bombs as if every
  50. ;new program is occupied by copying itself.
  51.